#!/bin/bash
#

#猜数字游戏
game(){
	let sum=${RANDOM}%100+1;
	while true; do
		read -p "猜数字(0-100): " a ;
		if [ $a -eq $sum ];then
			echo "猜对了 BYE";
			break;
		elif  [ $a -gt $sum ];then
			echo "猜大了";
		else 
			echo "猜小了";
		fi;
	done;
}
#九九乘法表
NXN(){
	for((i=0;i<=9;i++));do
		for((j=0;j<=$i;j++));do
			let sum=$i*$j
			echo -n "${i}X${j}=$sum "
		done
		echo -e "\n"
	done
}
#取随机数
SJS(){
	ary=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
	let sum=${RANDOM}%24
	echo "${ary[$sum]}"	
}
#排序
PX(){
	ary=(134 223 45 98 76 243 8 6 1 47)
	echo "原数据 ${ary[*]}"	
	length=${#ary[*]}
	t=0
	for((i=0;i<$length;i++));do
			let sum=$((i+1))
			m=${ary[$i]}
			for((j=$sum;j<$length;j++));do	
				m1=${ary[$j]}
				if [ $m -gt $m1 ];then		
					t=$m
					ary[$i]=$m1
					ary[$j]=$t
					m=$m1
				fi
			done
	done
	echo "${ary[*]}"
}
#矩阵
JZ(){
	read -p "请输入矩形的长: " a
	read -p "请输入矩形的宽: " b
	for((i=0;i<b;i++));do
		for((j=0;j<a;j++));do
			echo -n "* "
		done
		echo 
	done
}
#三角形
SJX(){
	for((i=0;i<5;i++));do
		for((j=0;j<i;j++));do
			echo -n "*"
		done
		echo ""
	done
}
#金字塔
JZT(){
	read -p "等边三角形边长" length
	sum=$length
	for((i=0;i<=length;i++));do
		#左侧空白用于做对其
		for((k=$sum;k>0;k--));do
			echo -n " "
		done
		
		for((j=0;j<=i;j++));do
			#最后一行
			if [ $i -eq $length ];then
				echo -n "* "
			else
				#中间掏空行
				if [ $j -eq 0 ] || [ $j -eq $i ]; then
					echo -n "* "
				else
					for((m=0;m<2;m++));do
						echo -n " "
					done
				fi
			fi
		done
		
		echo ""
		
		sum=$((sum-1))
	
	done
}
#菱形
LX(){
	read -p "请输入需要菱形的边长: " length
	sum=$length
	sum1=0
	t=$((length-1))
	l=$((length*2))
	for((i=0;i<=$l;i++));do
	#画上半		
		if [ $i -le $length ];then
		#空格
			for((j=$sum;j>0;j--));do
				echo -n " "
			done
		
		#画
			for((m=0;m<=i;m++));do
				echo -n "* "
			done
			sum=$((sum-1))
			echo ""
		else
	#画下半
		#空格
			for((n=0;n<=$sum1;n++));do
				echo -n " "
			done	
		#画
			for((o=$t;o>=0;o--));do
				echo -n "* "
			done
			sum1=$((sum1+1))
			t=$((t-1))
			echo ""
		fi
	done
}
#圣诞树
SDS(){
	sum=5
	l=5
	for((i=0;i<=10;i++));do
		#树叶
		if [ $i -le $l ];then
			for((k=$sum;k>0;k--));do
				echo -n " "
			done
			for((j=0;j<=i;j++));do
					echo -n "* "
			done
			echo ""
			sum=$((sum-1))
		else
			for((k=$l;k>1;k--));do
				echo -n " "
			done
			echo "****"
		fi
	done
}
#获取12345加减乘除后等于15的式子
SZ(){
#定义变量
arr=(1 2 3 4 5)
T=0
for i in + - \* \/;do 
	for t in ${arr[*]};do
		T=$t		
	done
	for j in + - \* \/;do
		for k in + - \* \/;do
			for l in + - \* \/;do
				let sum=$((1 $i 5 $j 2 $k 4 $l 3))
				if [ $sum -eq 15 ];then
					echo "1 $i 5 $j 2 $k 4 $l 3 = 15"
				fi
			done
		done
	done
done
}
#猜拳
CQ(){
#赢了
WIN(){
	echo "运气好没啥用"
}
#平局
PINGJU(){
	echo "连机器人都赢不了哥们"
}
#输了
OUT(){
	echo "菜就多练"
}
#创建随机数
h="欢迎来到猜拳游戏,请选择 {1-石头|2-剪刀|3-布}: "
let s0=${RANDOM}%3+1
read -p "$h" s1
echo "$s0===$s1 "
#判断
case $s1 in 
1)
	if [ $s0 -eq 1 ];then
		PINGJU
	elif [ $s0 -eq 2 ];then
		WIN
	else
		OUT
	fi
;;
2)
	if [ $s0 -eq 1 ];then
		OUT
	elif [ $s0 -eq 2 ];then
		PINGJU
	else
		WIN
	fi	
;;
3)	
	if [ $s0 -eq 1 ];then
		WIN
	elif [ $s0 -eq 2 ];then
		OUT
	else
		PINGJU
	fi
;;
*)
	echo "不是哥们,题都不看"
;;
esac 
}
#武侠决斗
CNKF(){
	#创建人机属性
	declare -A arr_0
	declare -A arr_1
	declare -A arr_2
	declare -A arr_3
	declare -A arr_u
	arr_0=( [name]="张飞" [HP]="100" [ATT]="10" [HIT]="2" )
	arr_1=( [name]="关羽" [HP]="120" [ATT]="5" [HIT]="3" )
	arr_2=( [name]="刘备" [HP]="130" [ATT]="5" [HIT]="2" ) 
	arr_3=( [name]="null" [HP]="150" [ATT]="6" [HIT]="3" )
	arr_u=( [name]="null" [HP]="null" [ATT]="null" [HIT]="null" )
	t=true
	T=true
	c=1
	#创建角色
	create_user(){
		read -p "请创建角色姓名: " "name"
		if [ -z $name ];then
			echo "姓名不能为空!!!"
			continue
		else
		arr_3[name]=$name
		echo "角色创建成功  姓名:${arr_3[name]}  血量:${arr_3[HP]}  攻击力:${arr_3[ATT]}  攻击速度:${arr_3[HIT]}"
		t=false
		fi
	}
	#选择对手
	select_user(){
		let AI=${RANDOM}%3
		case $AI in
		1)
		for key in "${!arr_1[@]}";do
			arr_u[$key]=${arr_1[$key]}
		done
		echo -e "你的对手是\n 姓名:${arr_u[name]}  血量:${arr_u[HP]}  攻击力:${arr_u[ATT]}  攻击速度:${arr_u[HIT]}"
		;;
		2)
		for key in "${!arr_2[@]}";do
			arr_u[$key]=${arr_2[$key]}
		done
		echo -e "你的对手是\n 姓名:${arr_u[name]}  血量:${arr_u[HP]}  攻击力:${arr_u[ATT]}  攻击速度:${arr_u[HIT]}"
		;;
		0)
		for key in "${!arr_0[@]}";do
			arr_u[$key]=${arr_0[$key]}
		done
		echo -e "你的对手是\n 姓名:${arr_u[name]}  血量:${arr_u[HP]}  攻击力:${arr_u[ATT]}  攻击速度:${arr_u[HIT]}"
		;;
		esac
	}	
	#决斗
	PK(){
		arr_zs=( "螺旋丸"  "龟派气功"  "天马流星拳"  "卍解"  "十万伏特"  "千年杀"  "替身"  "鬼背"  "虚无之翼"  "神圣之剑"  "天使咆哮"  "天使真身"  "天使光羽"  "太阳真火" )
		arr_sj=("使用了完美弹反!! 无视了攻击" "面如死灰" "道心崩溃" "爱上了老吴" "开始倒地碰瓷,吓了老吴一大跳" "有点害怕" "说是要去找老吴告状")
		while [ "${arr_u[HP]}" -gt 0 -a "${arr_3[HP]}" -gt 0 ];do
			echo "====================第$c回合开始====================="
			FIT ${arr_u[name]} ${arr_3[name]}
			let c++
			#sleep 2
		done
		T=false	
		if [ ${arr_3[HP]} -eq 0 ];then
			echo "你输了"
		else
			echo "你赢了"
		fi
		break
	}
	#对打
	FIT(){
		let t1=${RANDOM}%${#arr_zs[@]}	
		let t2=${RANDOM}%${#arr_sj[@]}	
		let t3=${RANDOM}%${#arr_zs[@]}
		let t4=${RANDOM}%${#arr_sj[@]}
		#let sh1=${arr_u[ATT]}*${arr_u[HIT]}
		#let sh2=${arr_3[ATT]}*${arr_3[HIT]}
		let sh1=${RANDOM}%30
		let sh2=${RANDOM}%30

		if [ $t2 -eq 0 -o $t4 -eq 0 ];then
			echo -e "$1对$2使用了${arr_zs[$t1]}    $2${arr_sj[0]}受到0点伤害 $2剩余${arr_3[HP]}HP"
			echo -e "$2对$1使用了${arr_zs[$t3]}    $1${arr_sj[0]}受到0点伤害 $1剩余${arr_u[HP]}HP"
		else
			let arr_u[HP]=$((${arr_u[HP]}-$sh2))
			let arr_3[HP]=$((${arr_3[HP]}-$sh1))
			echo -e "$1对$2使用了${arr_zs[$t1]}    $2${arr_sj[$t2]}受到$sh1点伤害 $2剩余${arr_3[HP]}HP"
			echo -e "$2对$1使用了${arr_zs[$t3]}    $1${arr_sj[$t4]}受到$sh2点伤害 $1剩余${arr_u[HP]}HP"
		fi
	}
	while $T;do
		if [ $t == "true" ];then
		create_user
		select_user
		fi
		read -p "是否开启决斗: (1.开启  2.取消)" open
		case $open in
		1)
			PK
		;;
		2)
			echo "怂逼"
			break
		;;
		*)
			echo "不是哥们题都不看"
		esac
	done
}
echo -e "1.猜数字游戏 2.九九乘法表 3.取随机数 4.排序 5.矩阵 6.三角形 7.中空的等边三角形 8.菱形 9.圣诞树\na.获取式子 b.猜拳 c.武侠决斗"
read -p "请输入服务编号: " T
case $T in
1)
	game
;;
2)
	NXN
;;
3)
	SJS
;;
4)
	PX
;;
5)
	JZ
;;
6)
	SJX
;;
7)
	JZT
;;
8)
	LX
;;
9)
	SDS
;;
a)
	SZ
;;
b)
	CQ
;;
c)
	CNKF
;;
*)
	echo "$0 <1.猜数字游戏 2.九九乘法表 3.取随机数 4.排序 5.矩阵 6.三角形 7.中空的等边三角形 8.菱形 9.圣诞树\na.获取式子 b.猜拳>"
;;
esac
